﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;

namespace FunMazeEngine
{
    public class GameController
    {
    //    public Game game;
    //    bool gameStart = false;
    //    int totalcells = 0;
    //    int mapsize = 0;

    //    public GameController()
    //    {

    //    }

    //    public bool CreateGame(GamePlayer player, int mazePara, int treasureCount)
    //    {
    //        try
    //        {
    //            Random random = new Random();
    //            Map gameMap = new Map();
    //            gameMap.CreateMap(mazePara, treasureCount);
    //            mapsize = mazePara;

    //            game = new Game();
    //            game.GameMap = gameMap;

    //            game.AddPlayer(player);
    //            totalcells = gameMap.GetTotalCells();
    //            player.Location = random.Next(0, totalcells);
    //            int thisrow, thiscolumn = 0;
    //            game.GameMap.GetRowColumnLocation(player.Location, out thisrow, out thiscolumn);
    //            game.GameMap.PlayerGetTreasure(player, thisrow, thiscolumn);

    //            return true;
    //        }
    //        catch (Exception ex)
    //        {
    //            Console.WriteLine(ex.StackTrace);
    //            return false;

    //        }

    //    }

    //    public bool GameExists()
    //    {
    //        if (mapsize == 0) return false;
    //        else return true;
    //    }

    //    public bool StartGame()
    //    {
    //        Thread.Sleep(20000);
    //        gameStart = true;
    //        return gameStart;
    //    }

    //    public bool JoinGame(GamePlayer player)
    //    {
    //        bool joinGameResult = false;
            
    //        try
    //        {
    //            {
    //                if (!gameStart)
    //                {
    //                    Random random = new Random();
    //                    game.AddPlayer(player);
    //                    player.Location = -1;

    //                    while (player.Location == -1)
    //                    {
    //                        int spawnloc = random.Next(0, totalcells);
    //                        if (game.PlayerThere(spawnloc) == false)
    //                        {
    //                            player.Location = spawnloc;
    //                        }

    //                        /*
    //                         * if not occupied, add the player there(player.Location = spawnloc), else try again(do nothing).
    //                         */
    //                    }
    //                    int thisrow, thiscolumn = 0;
    //                    game.GameMap.GetRowColumnLocation(player.Location, out thisrow, out thiscolumn);
    //                    game.GameMap.PlayerGetTreasure(player, thisrow, thiscolumn);


    //                    joinGameResult = true;
    //                }
    //            }
    //        }
    //        catch (Exception ex)
    //        {
    //            Console.WriteLine(ex.StackTrace);
    //        }


    //        return joinGameResult;
    //    }

    //    public GamePlayer GetGamePlayer(string name)
    //    {
    //        return game.RetrieveGamePlayer(name);
    //    }


    //    public void ExitGame(GamePlayer player)
    //    {
    //        game.RemovePlayer(player);
    //    }

    //    /*
    //    public bool PlayerMove(GamePlayer player)
    //    {
    //        bool moveSuccess = false;
    //        if (gameStart)
    //        {
    //            int currentLocation = player.Location;
    //            int row = 0, column = 0;
    //            game.GameMap.GetRowColumnLocation(currentLocation, out row, out column);

    //            switch (player.Move)
    //            {
    //                case "E":
    //                    if (row == mapsize) { moveSuccess = false; }
    //                    else
    //                    {
    //                        row++;
    //                        int newlocation = game.GameMap.GetCellLocation(row, column);
    //                        if (game.PlayerThere(newlocation))
    //                        {
    //                            moveSuccess = false;
    //                        }
    //                        else
    //                        {
    //                            player.Location = game.GameMap.GetCellLocation(row, column);
    //                            moveSuccess = true;
    //                        }
    //                    }
    //                    break;
                        
    //                case "W":
    //                    if (row == 0) { moveSuccess = false; }
    //                    else
    //                    {
    //                        row--;
    //                        int newlocation = game.GameMap.GetCellLocation(row, column);
    //                        if (game.PlayerThere(newlocation))
    //                        {
    //                            moveSuccess = false;
    //                        }
    //                        else
    //                        {
    //                            player.Location = newlocation;
    //                            moveSuccess = true;
    //                        }
    //                    }
    //                    break;
    //                case "N":
    //                    if (column == 0) { moveSuccess = false; }
    //                    else
    //                    {
    //                        column--;
    //                        int newlocation = game.GameMap.GetCellLocation(row, column);
    //                        if (game.PlayerThere(newlocation))
    //                        {
    //                            moveSuccess = false;
    //                        }
    //                        else
    //                        {
    //                            player.Location = newlocation;
    //                            moveSuccess = true;
    //                        }
    //                    }
    //                    break;
    //                case "S":
    //                    if (column == mapsize) { moveSuccess = false; }
    //                    else
    //                    {
    //                        column++;
    //                        int newlocation = game.GameMap.GetCellLocation(row, column);
    //                        if (game.PlayerThere(newlocation))
    //                        {
    //                            moveSuccess = false;
    //                        }
    //                        else
    //                        {
    //                            player.Location = newlocation;
    //                            moveSuccess = true;
    //                        }
    //                    }
                        
    //                    break;
    //                default:
    //                    moveSuccess = false;
    //                    break;
    //            }
    //        }
    //        return moveSuccess;
    //    }*/


    //    public bool PlayerMoveEast(GamePlayer player)
    //    {
    //        bool moveSuccess = false;
    //        if (gameStart)
    //        {
    //            int currentLocation = player.Location;
    //            int row = 0, column = 0;
    //            game.GameMap.GetRowColumnLocation(currentLocation, out row, out column);

    //            if (row == mapsize) { moveSuccess = false; }
    //            else
    //            {
    //                row++;
    //                int newlocation = game.GameMap.GetCellLocation(row, column);
    //                if (game.PlayerThere(newlocation))
    //                {
    //                    moveSuccess = false;
    //                }
    //                else
    //                {
    //                    player.Location = game.GameMap.GetCellLocation(row, column);
    //                    moveSuccess = true;
    //                }
    //            }

    //        }
    //        return moveSuccess;

    //    }

    //    public bool PlayerMoveWest(GamePlayer player)
    //    {
    //        bool moveSuccess = false;
    //        if (gameStart)
    //        {
    //            int currentLocation = player.Location;
    //            int row = 0, column = 0;
    //            game.GameMap.GetRowColumnLocation(currentLocation, out row, out column);

    //            if (row == 0) { moveSuccess = false; }
    //            else
    //            {
    //                row--;
    //                int newlocation = game.GameMap.GetCellLocation(row, column);
    //                if (game.PlayerThere(newlocation))
    //                {
    //                    moveSuccess = false;
    //                }
    //                else
    //                {
    //                    player.Location = game.GameMap.GetCellLocation(row, column);
    //                    moveSuccess = true;
    //                }
    //            }

    //        }
    //        return moveSuccess;

    //    }

    //    public bool PlayerMoveNorth(GamePlayer player)
    //    {
    //        bool moveSuccess = false;
    //        if (gameStart)
    //        {
    //            int currentLocation = player.Location;
    //            int row = 0, column = 0;
    //            game.GameMap.GetRowColumnLocation(currentLocation, out row, out column);

    //            if (column == 0) { moveSuccess = false; }
    //            else
    //            {
    //                column--;
    //                int newlocation = game.GameMap.GetCellLocation(row, column);
    //                if (game.PlayerThere(newlocation))
    //                {
    //                    moveSuccess = false;
    //                }
    //                else
    //                {
    //                    player.Location = game.GameMap.GetCellLocation(row, column);
    //                    moveSuccess = true;
    //                }
    //            }

    //        }
    //        return moveSuccess;

    //    }

    //    public bool PlayerMoveSouth(GamePlayer player)
    //    {
    //        bool moveSuccess = false;
    //        if (gameStart)
    //        {
    //            int currentLocation = player.Location;
    //            int row = 0, column = 0;
    //            game.GameMap.GetRowColumnLocation(currentLocation, out row, out column);

    //            if (column == mapsize) { moveSuccess = false; }
    //            else
    //            {
    //                column++;
    //                int newlocation = game.GameMap.GetCellLocation(row, column);
    //                if (game.PlayerThere(newlocation))
    //                {
    //                    moveSuccess = false;
    //                }
    //                else
    //                {
    //                    player.Location = game.GameMap.GetCellLocation(row, column);
    //                    moveSuccess = true;
    //                }
    //            }

    //        }
    //        return moveSuccess;

    //    }

    }

}